<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 引入样式 -->
    <link rel="stylesheet" href="../../plugins/element-ui/index.css"/>
    <link rel="stylesheet" href="../../styles/common.css"/>
    <link rel="stylesheet" href="../../styles/page.css"/>

</head>
<body>
<div class="addBrand-container" id="member-add-app">
    <div class="container">
        <el-form
                ref="ruleForm"
                :model="ruleForm"
                :rules="rules"
                :inline="false"
                label-width="180px"
                class="demo-ruleForm"
        >
            <el-form-item label="账号:" prop="username">
                <el-input v-model="ruleForm.username" placeholder="请输入账号" maxlength="20"/>
            </el-form-item>
            <el-form-item
                    label="员工姓名:"
                    prop="name"
            >
                <el-input
                        v-model="ruleForm.name"
                        placeholder="请输入员工姓名"
                        maxlength="20"
                />
            </el-form-item>
            <el-form-item

                    label="上传头像:"
                    prop="region"
                    class="uploadImg"
            >
                <el-upload class="avatar-uploader"
                           action="/common/upload"
                           :show-file-list="false"
                           :on-success="handleAvatarSuccess"
                           :before-upload="beforeUpload"
                           ref="upload">
                    <img v-if="imageUrl" :src="imageUrl" class="avatar"></img>
                    <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                </el-upload>
            </el-form-item>

            <el-form-item
                    label="手机号:"
                    prop="phone"
            >
                <el-input
                        v-model="ruleForm.phone"
                        placeholder="请输入手机号"
                        maxlength="20"
                />
            </el-form-item>
            <el-form-item
                    label="性别:"
                    prop="sex"
            >
                <el-radio-group v-model="ruleForm.sex">
                    <el-radio label="男"></el-radio>
                    <el-radio label="女"></el-radio>
                </el-radio-group>
            </el-form-item>
            <el-form-item
                    label="身份证号:"
                    prop="idNumber"
            >
                <el-input
                        v-model="ruleForm.idNumber"
                        placeholder="请输入身份证号"
                        maxlength="20"
                />
            </el-form-item>
            <div class="subBox address">
                <el-form-item>
                    <el-button @click="goBack()">
                        取消
                    </el-button>
                    <el-button
                            type="primary"
                            @click="submitForm('ruleForm', false)">
                        保存
                    </el-button>
                    <el-button
                            v-if="actionType == 'add'"
                            type="primary"
                            class="continue"
                            @click="submitForm('ruleForm', true)">
                        保存并继续添加
                    </el-button>
                </el-form-item>
            </div>
        </el-form>
    </div>
</div>
<!-- 开发环境版本，包含了有帮助的命令行警告 -->
<script src="../../plugins/vue/vue.js"></script>
<!-- 引入组件库 -->
<script src="../../plugins/element-ui/index.js"></script>
<!-- 引入axios -->
<script src="../../plugins/axios/axios.min.js"></script>
<script src="../../js/request.js"></script>
<script src="../../api/member.js"></script>
<script src="../../js/validate.js"></script>
<script src="../../js/index.js"></script>

<script>
    var v = new Vue({
        el: '#member-add-app',
        data() {
            return {
                imageUrl: '',
                id: '',
                actionType: 'add', //默认就是添加操作。
                ruleForm: {
                    'name': 'zhangsan',
                    'phone': '13810081009',
                    'sex': '男',
                    'idNumber': '123456789012345678',
                    username: ''
                }
            }
        },
        computed: {
            rules() {
                return {
                    //账号
                    username: [
                        {
                            required: true, 'validator': checkUserName, trigger: 'blur'
                        }
                    ],
                    //姓名
                    name: [{required: true, 'validator': checkName, 'trigger': 'blur'}],
                    'phone': [{'required': true, 'validator': checkPhone, 'trigger': 'blur'}],
                    'idNumber': [{'required': true, 'validator': validID, 'trigger': 'blur'}]
                }
            }
        },
        created() {

            //从浏览器地址栏获取id值， ： 不需要！
            //this.id = requestUrlParam('id')
            //this.actionType = this.id ? 'edit' : 'add'
            /*if (this.id) {
              this.init()
            }*/

            //回显数据
            //1. 从内存中获取我们前面存储的数据 ,把这取到的数据【JSON字符串】 转化成 JS对象
            // 这里要考虑有可能是点击添加按钮过来的，点击添加按钮过来，不会在内存中保存任何数据，所以这里还不能直接转化数据
            // 需要先判定这份数据有还是没有。如果有，即表明是点击编辑过来的，如果没有，则表明是点击添加过来的。

            var json = sessionStorage.getItem("employee");

            //如果能进入这个if语句，即表示是点击编辑过来的
            if (json) {
                this.ruleForm = JSON.parse(json);
                //2. 处理性别：
                this.ruleForm.sex = this.ruleForm.sex === '1' ? "男" : "女";

                this.imageUrl = `/common/download?name=` + this.ruleForm.image //图片


                //3. 设置动作类型，以便后续的点击保存按钮，就执行更新的动作了。
                this.actionType = "edit";
            }

        },
        mounted() {
        },
        methods: {

            handleAvatarSuccess(response, file, fileList) {
                if (response.code === 0 && response.msg === '未登录') {
                    window.top.location.href = '/backend/page/login/login.html'
                } else {
                    this.imageUrl = `/common/download?name=${response.data}`

                    this.ruleForm.image = response.data
                }
            },
            //上传图片之前执行校验。 突变不能超过2M，必须是，指定的格式类型
            beforeUpload(file) {
                if (file) {
                    const suffix = file.name.split('.')[1]
                    const size = file.size / 1024 / 1024 < 2
                    if (['png', 'jpeg', 'jpg'].indexOf(suffix) < 0) {
                        this.$message.error('上传图片只支持 png、jpeg、jpg 格式！')
                        this.$refs.upload.clearFiles()
                        return false
                    }
                    if (!size) {
                        this.$message.error('上传文件大小不能超过 2MB!')
                        return false
                    }
                    return file
                }
            },
            async init() {
                queryEmployeeById(this.id).then(res => {
                    console.log(res)
                    if (String(res.code) === '1') {
                        console.log(res.data)
                        this.ruleForm = res.data
                        this.ruleForm.sex = res.data.sex === '0' ? '女' : '男'

                        // this.ruleForm.password = ''
                    } else {
                        this.$message.error(res.msg || '操作失败')
                    }
                })
            },

            //点击保存或者 保存并继续添加，都会执行这个方法
            submitForm(formName, st) {

                //找到表单，然后执行表单的校验工作
                this.$refs[formName].validate((valid) => {

                    //如果校验成功
                    if (valid) {
                        //由于添加和更新共用同一个页面，所以现在点击保存按钮不能直接认为这就是做添加操作
                        //判定动作类型是不是 添加动作，
                        if (this.actionType === 'add') {

                            //1. 准备参数
                            //this.ruleForm.sex = this.ruleForm.sex == '女' ? 0 : 1;
                            // 构建一个全新的JS对象， 下面的  ...this.ruleForm的意思就是把这个ruleForm的属性全部拿过来
                            // 装到这个新的对象里面去。ruleForm有多少个属性就拿过来多少个属性
                            // 如果对直接拿过来的属性，某些数据不满意，那么可以在后面单独再一次声明同样名字的属性，然后赋值即可。
                            const params = {
                                ...this.ruleForm,
                                sex: this.ruleForm.sex === '女' ? '0' : '1'

                            }

                            //2. 发起请求
                            axios.post("/employee", params).then(resp => {
                                console.log("添加结果：");
                                console.log(resp);

                                //判断结果
                                if (resp.data.code) {

                                    // 1. 先给出提示
                                    this.$message.success(resp.data.data);

                                    //2. 判定点击的是保存，还是保存并继续添加:: setTimeout() ===== javascript
                                    if (st) {
                                        //点击的是保存并继续添加 ， 只需要清空表单即可
                                        this.ruleForm = {
                                            username: '',
                                            name: '',
                                            phone: '',
                                            sex: '男',
                                            idNumber: ''
                                        }

                                    } else {

                                        //点击是保存, 那么就回到上一个页面
                                        setTimeout(function () {
                                            v.goBack()
                                        }, 1000);
                                    }

                                } else {
                                    // 给出提示
                                    this.$message.error(resp.data.msg);
                                }
                            });


                            /* //1. 准备请求参数。
                             const params = {
                               ...this.ruleForm,
                               sex: this.ruleForm.sex === '女' ? '0' : '1'
                             }

                             //发起请求！
                             addEmployee(params).then(res => {
                               if (res.code === 1) {
                                 this.$message.success('员工添加成功！')
                                 if (!st) {
                                   this.goBack()
                                 } else {
                                   this.ruleForm = {
                                     username: '',
                                     'name': '',
                                     'phone': '',
                                     // 'password': '',
                                     // 'rePassword': '',/
                                     'sex': '男',
                                     'idNumber': ''
                                   }
                                 }
                               } else {
                                 this.$message.error(res.msg || '操作失败')
                               }
                             }).catch(err => {
                               this.$message.error('请求出错了：' + err)
                             })*/
                        } else { //来到这里表示是执行更新操作

                            //1. 准备参数
                            const params = {
                                ...this.ruleForm,
                                sex: this.ruleForm.sex === '女' ? '0' : '1'
                            }

                            //2. 发起请求
                            axios.put("/employee", params).then(resp => {
                                if (resp.data.code === 1) {
                                    this.$message.success(resp.data.data)

                                    setTimeout(this.goBack, 1000);
                                    // this.goBack()
                                } else {
                                    this.$message.error(resp.data.msg)
                                }
                            });

                            /*editEmployee(params).then(res => {
                              if (res.code === 1) {
                                this.$message.success('员工信息修改成功！')
                                this.goBack()
                              } else {
                                this.$message.error(res.msg || '操作失败')
                              }
                            }).catch(err => {
                              this.$message.error('请求出错了：' + err)
                            })*/
                        }
                    } else {
                        console.log('error submit!!')
                        return false
                    }
                })
            },
            goBack() {
                window.parent.menuHandle({
                    id: '2',
                    url: '/backend/page/member/list.html',
                    name: '员工管理'
                }, false)
            }
        }
    })
</script>
</body>
</html>